package chapter05_array;

/**
 * ClassName: RevealArray
 * Package: chapter05_array
 * Description:
 *定义数组，{34,54,3,2,65,7,5,76,90,67}，并实现数组的反转，有几种方式？
 * @Author 安思宇
 * @Create 2025/2/26 10:55
 */
public class RevealArray {
    public static void main(String[] args) {
//  方法一：
//        1.定义数组
        int[] arr1=new int[]{34,54,3,2,65,7,5,76,90,67};
        for (int i = 0; i < arr1.length; i++) {
            System.out.print(arr1[i]+",");
        }
        System.out.println();
//        2.设置临时变量
        int temp1=0;
//        3.通过临时变量在原数组进行数据的翻转操作
        //出错点:执行交换的for循环只需要五次。
//        for (int i = 0; i < arr1.length/2; i++) {
//            temp1=arr1[i];
//            arr1[i]= arr1[arr1.length-1-i];
//            arr1[arr1.length-1-i]=temp1;
//        }
//        for (int i = 0; i < arr1.length; i++) {
//            System.out.print(arr1[i]+",");
//        }
//        System.out.println();
//  方法二：
        int temp2=0;
//        定义两个变量
        for (int i = 0,j=arr1.length-1; i <j ; i++,j--) {
            temp2=arr1[i];
            arr1[i]= arr1[j];
            arr1[j]=temp2;
        }
        for (int i = 0; i < arr1.length; i++) {
            System.out.print(arr1[i]+",");
        }
        System.out.println();
//  方法三：（不推荐，因为新开辟了一个空间并且多了一个for循环）
//        1.定义两个数组
        int[] arr2=new int[arr1.length];
//        2.通过for循环实现数据的反转
        for (int i = 0; i < arr2.length; i++) {
            arr2[i]=arr1[arr1.length-i-1];
            System.out.print(arr1[i]+",");
        }
        System.out.println();
    }
}
